home *** CD-ROM | disk | FTP | other *** search
/ Gekikoh Dennoh Club 5 / Gekikoh Dennoh Club Vol. 5 (Japan).7z / Gekikoh Dennoh Club Vol. 5 (Japan) (Track 01).bin / internet / webx / jpged26s.lzh / mk_mul_tbl.s < prev    next >
Text File  |  1996-10-12  |  14KB  |  789 lines

  1. *
  2. *
  3. *       è|é»ÄZâeü[âuâï
  4. *
  5. *
  6. *
  7. include  DOSCALL.MAC
  8. include  IOCSCALL.MAC
  9. include  JPEG.MAC
  10. include     work.inc
  11.  
  12.   .text
  13.     .xref    Memory_error
  14.     .xref    DHTDCL    *'MES.S'
  15.     
  16. *
  17. *
  18. * ü@éqéféaâeü[âuâïì∞ɼ
  19. *
  20. *    ôⁿù═
  21. *        é╚é╡
  22. *    Åoù═
  23. *        é╚é╡
  24. *
  25. .xdef    make_RGB_table
  26. make_RGB_table
  27.  
  28.     movea.l a6,a0
  29.     adda.l  #RGB_TBL+2048*2*6,a0
  30.     move.l    #$f801_07c0,d0
  31.     move.l    #$003e_f801,d1
  32.     move.l    #$07c0_003e,d2
  33.     move.l    d0,d3
  34.     move.l    d1,d4
  35.     move.l    d2,d5
  36.  
  37.     rept    8
  38.     movem.l    d0-d5,-(a0)
  39.     endm
  40.  
  41.     moveq.l    #32-1,d7
  42.  
  43. @@
  44.  
  45.     rept    8
  46.     movem.l    d0-d5,-(a0)
  47.     endm
  48.  
  49.     sub.l    #$0001_0000,d0
  50.     move.l    d0,d3
  51.     rept    8
  52.     movem.l    d0-d5,-(a0)
  53.     endm
  54.  
  55.     subq.w    #1,d1
  56.     move.l    d1,d4
  57.     rept    8
  58.     movem.l    d0-d5,-(a0)
  59.     endm
  60.  
  61.     sub.l    #$07ff_0040,d0
  62.     sub.l    #$0002_0000,d1
  63.     move.l    d0,d3
  64.     move.l    d1,d4
  65.     rept    8
  66.     movem.l    d0-d5,-(a0)
  67.     endm
  68.  
  69.     sub.w    #$0000_07ff,d1
  70.     sub.l    #$0040_0002,d2
  71.     move.l    d1,d4
  72.     move.l    d2,d5
  73.     dbra    d7,@b
  74.  
  75.     movea.l a6,a0
  76.     adda.l  #RGB_TBL_under+RGB_flow*2*6,a0
  77.  
  78.     moveq.l    #0,d0
  79.     moveq.l    #0,d1
  80.     moveq.l    #0,d2
  81.     moveq.l    #0,d3
  82.     moveq.l    #0,d4
  83.     moveq.l    #0,d5
  84.  
  85.     move.w    #RGB_flow/2/4-1,d7
  86. @@
  87.     movem.l    d0-d5,-(a0)
  88.     movem.l    d0-d5,-(a0)
  89.     movem.l    d0-d5,-(a0)
  90.     movem.l    d0-d5,-(a0)
  91.     dbra.w    d7,@b
  92.  
  93.     movea.l a6,a0
  94.     adda.l  #RGB_TBL_over+RGB_flow*2*6,a0
  95.  
  96.     move.l    #$f80107c0,d0
  97.     move.l    #$003ef801,d1
  98.     move.l    #$07c0003e,d2
  99.     move.l    d0,d3
  100.     move.l    d1,d4
  101.     move.l    d2,d5
  102.  
  103.     move.w    #RGB_flow/2/4-1,d7
  104. @@
  105.     movem.l    d0-d5,-(a0)
  106.     movem.l    d0-d5,-(a0)
  107.     movem.l    d0-d5,-(a0)
  108.     movem.l    d0-d5,-(a0)
  109.     dbra.w    d7,@b
  110.     rts
  111. *
  112. *
  113. * ü@éhécébésŵÄZâeü[âuâïì∞ɼ
  114. *
  115. *    ôⁿù═
  116. *        é╚é╡
  117. *    Åoù═
  118. *        é╚é╡
  119. *
  120. .xdef    make_IDCT_table
  121. make_IDCT_table
  122.  
  123.     movea.l a6,a2
  124.     adda.l  #COS_TBL+2048*2*6,a2
  125.     move.w    #4096/2+mul_flow-1,d7
  126.     move.l    #2324419551,a4            cos(pi*6/16)*sqr(2)
  127.     bsr    make_mul_tbl_sub2
  128.  
  129.     addq.w    #2,a2
  130.     move.w    #4096/2+mul_flow-1,d7
  131.     moveq.l    #1*6*2,d6            cos(pi*2/16)*sqr(2)
  132.     move.l    #1316677908,a4
  133.     bsr    make_mul_tbl_sub
  134.  
  135.     addq.w    #2,a2
  136.     move.w    #4096/2+mul_flow-1,d7
  137.     moveq.l    #1*6*2,d6            cos(pi/16)*sqr(2)
  138.     move.l    #1662323478,a4
  139.     bsr    make_mul_tbl_sub
  140.  
  141.     addq.w    #2,a2
  142.     move.w    #4096/2+mul_flow-1,d7
  143.     moveq.l    #1*6*2,d6            cos(pi*3/16)*sqr(2)
  144.     move.l    #755379961,a4
  145.     bsr    make_mul_tbl_sub
  146.  
  147.     addq.w    #2,a2
  148.     move.w    #4096/2+mul_flow-1,d7
  149.     move.l    #3374534151,a4            cos(pi*5/16)*sqr(2)
  150.     bsr    make_mul_tbl_sub2
  151.  
  152.     addq.w    #2,a2
  153.     move.w    #4096/2+mul_flow-1,d7
  154.     move.l    #1184978811,a4            cos(pi*7/16)*sqr(2)
  155. *****************************************************************
  156. *
  157. *  IDCTùpŵÄZâeü[âuâïì∞ɼ2
  158. *
  159. *    ôⁿù═
  160. *        a4.l...Ælé╠æ¥ò¬*65536*65536
  161. *        d7.l...âeü[âuâïâTâCâY/2
  162. *        a2...âeü[âuâïâAâhâîâXüiéOé╠Ælé╠é╞é▒éδé≡é│é╖üj
  163. *    Åoù═
  164. *        é╚é╡
  165. *    öjë≤
  166. *        d0,d1,d2,d3,a0,a1,a3
  167. *****************************************************************
  168. make_mul_tbl_sub2
  169.  
  170.     moveq.l    #0,d0
  171.     moveq.l    #0,d1
  172.     moveq.l    #-6*2,d2
  173.     moveq.l    #6*2,d5
  174.  
  175.     movea.l a2,a0
  176.     movea.l    a2,a1
  177.  
  178. @@
  179.     move.w    d1,(a0)
  180.     adda.l    d5,a0
  181.  
  182.     add.l    a4,d0
  183.     subx.w    d4,d4
  184.     and.w    d5,d4
  185.     add.w    d4,d1
  186.     sub.w    d4,d2
  187.  
  188.     suba.l    d5,a1
  189.     move.w    d2,(a1)
  190.  
  191.     dbra    d7,@b
  192.     rts
  193. *****************************************************************
  194. *
  195. *  IDCTùpŵÄZâeü[âuâïì∞ɼ
  196. *
  197. *    ôⁿù═
  198. *        d6.l*65536*65536+a4.l...Ælé╠æ¥ò¬*65536*65536
  199. *        d7.l...âeü[âuâïâTâCâY/2
  200. *        a2...âeü[âuâïâAâhâîâXüiéOé╠Ælé╠é╞é▒éδé≡é│é╖üj
  201. *    Åoù═
  202. *        é╚é╡
  203. *    öjë≤
  204. *        d0,d1,d2,d3,a0,a1,a3
  205. *****************************************************************
  206. make_mul_tbl_sub
  207.  
  208.     moveq.l    #0,d1
  209.  
  210. _make_mul_tbl_sub
  211.  
  212.     moveq.l    #6*2,d5
  213.     moveq.l    #0,d0
  214.     move.l    d1,d2
  215.     sub.l    d5,d2
  216.  
  217.     movea.l a2,a0
  218.     movea.l    a2,a1
  219.  
  220. @@
  221.     move.w    d1,(a0)
  222.     adda.l    d5,a0
  223.  
  224.     add.l    a4,d0
  225.     subx.w    d4,d4
  226.     and.w    d5,d4
  227.     add.w    d6,d4
  228.     add.w    d4,d1
  229.     sub.w    d4,d2
  230.  
  231.     suba.l    d5,a1
  232.     move.w    d2,(a1)
  233.  
  234.     dbra    d7,@b
  235.     rts
  236. *
  237. *
  238. *  éxétéuéöéÅéqéféaò╧è╖ŵÄZâeü[âuâïì∞ɼ
  239. *
  240. *    ôⁿù═
  241. *        é╚é╡
  242. *    Åoù═
  243. *        é╚é╡
  244. *
  245. .xdef    make_YUV_RGB_table
  246. make_YUV_RGB_table
  247.  
  248.     movea.l a6,a2
  249.     adda.l  #YUV_RGB_TBL+1024*2*6,a2
  250.     move.w    #2048/2+mul_flow-1,d7
  251.     moveq.l    #-1*6*2,d6                -0.3411*65536*65536
  252.     move.l    #-1465013345,a4
  253.     bsr    make_mul_tbl_sub
  254.  
  255.     addq.w    #2,a2
  256.     move.w    #2048/2+mul_flow-1,d7
  257.     moveq.l    #1*6*2,d6                1.7718*65536*65536
  258.     move.l    #3314855759,a4
  259.     bsr    make_mul_tbl_sub
  260.  
  261.     addq.w    #2,a2
  262.     move.w    #2048/2+mul_flow-1,d7
  263.     moveq.l    #1*6*2,d6                1.4020*65536*65536
  264.     move.l    #1726576853,a4
  265.     moveq.l    #R_TBL,d1
  266.     bsr    _make_mul_tbl_sub
  267.  
  268.     addq.w    #2,a2
  269.     move.w    #2048/2+mul_flow-1,d7
  270.     moveq.l    #-1*6*2,d6                -0.7139*65536*65536
  271.     move.l    #-3066177153,a4
  272.     moveq.l    #G_TBL,d1
  273.     bsr    _make_mul_tbl_sub
  274.  
  275.     addq.w    #2,a2
  276.     move.w    #2048/2+mul_flow-1,d7
  277.     moveq.l    #-1*6*2,d6                -0.0012*65536*65536
  278.     move.l    #-5153961,a4
  279.     moveq.l    #B_TBL,d1
  280.     bra    _make_mul_tbl_sub
  281. *
  282. *
  283. *  écébésò╧è╖ŵÄZâeü[âuâïì∞ɼ
  284. *
  285. *    ôⁿù═
  286. *        é╚é╡
  287. *    Åoù═
  288. *        é╚é╡
  289. *
  290. .xdef    make_DCT_table
  291. make_DCT_table
  292.  
  293.     movea.l a6,a2
  294.     adda.l  #DCT_TBL+4096/2*8*4,a2
  295.     move.w    #4*4,a3
  296.     move.w    #8192/2-1,d7
  297.     move.l    #3924782306,d5
  298.     move.l    #17733,d6            cos6*65536^3
  299.     bsr    make_DCT_tbl_sub
  300.  
  301.     addq.w    #4,a2
  302.     move.w    #8192/2-1,d7
  303.     move.l    #1955211143,d5
  304.     move.l    #42813,d6            cos2
  305.     bsr    make_DCT_tbl_sub
  306.  
  307.     addq.w    #4,a2
  308.     move.w    #8*4,a3
  309.     move.w    #4096/2-1,d7
  310.     move.l    #2240476201,d5
  311.     move.l    #45450,d6            cos1
  312.     bsr    make_DCT_tbl_sub
  313.  
  314.     addq.w    #4,a2
  315.     move.w    #4096/2-1,d7
  316.     move.l    #394020632,d5
  317.     move.l    #38531,d6            cos3
  318.     bsr    make_DCT_tbl_sub
  319.  
  320.     addq.w    #4*2,a2                cos2h,cos6h
  321.  
  322.     addq.w    #4,a2
  323.     move.w    #4096/2-1,d7
  324.     move.l    #2802021324,d5
  325.     move.l    #25745,d6            cos5
  326.     bsr    make_DCT_tbl_sub
  327.  
  328.     addq.w    #4,a2
  329.     move.w    #4096/2-1,d7
  330.     move.l    #2881323235,d5
  331.     move.l    #9040,d6            cos7
  332. *
  333. *  DCTùpŵÄZâeü[âuâïì∞ɼ
  334. *
  335. *    ôⁿù═
  336. *        d6.l*65536*65536*65536+d5.l*65535*65535....Ælé╠æ¥ò¬*65536*65536*65535
  337. *        d7.l...âeü[âuâïâTâCâY/2
  338. *        a2...éOé╠Ælé╠âeü[âuâïâAâhâîâX
  339. *        a3...âAâhâîâXæ¥ë┴ò¬
  340. *    Åoù═
  341. *        é╚é╡
  342. *    öjë≤
  343. *        d0,d1,d2,d3,a0,a1,a3
  344. *
  345. make_DCT_tbl_sub
  346.  
  347.     move.l    #$8000_0000,d0        +0.5(ÄlÄ╠î▄ôⁿé╠é╜é▀)
  348.     moveq.l    #0,d1
  349.     move.l    d0,d2
  350.     moveq.l    #0,d3
  351.     movea.l a2,a0
  352.     movea.l a2,a1
  353.  
  354. @@
  355.  
  356.     move.l    d1,(a0)
  357.     adda.l    a3,a0
  358.     add.l    d5,d0
  359.     addx.l    d6,d1
  360.  
  361.     sub.l    d5,d2
  362.     subx.l    d6,d3
  363.     suba.l    a3,a1
  364.     move.l    d3,(a1)
  365.  
  366.     dbra    d7,@b
  367.     rts
  368.  
  369. *
  370. *
  371. *  éqéféaéöéÅéxétéuò╧è╖ŵÄZâeü[âuâïì∞ɼ
  372. *
  373. *    ôⁿù═
  374. *        é╚é╡
  375. *    Åoù═
  376. *        é╚é╡
  377. *
  378. .xdef    make_RGB_YUV_table
  379. make_RGB_YUV_table
  380.  
  381.     movea.l a6,a2
  382.     adda.l  #RGB_YUV_TBL,a2
  383.     move.w    #64/2*8*4,d0
  384.     cmp.w    #16,VScbit(a6)
  385.     beq    @f        16bit╢╫░╙░─▐é┼éáéΘ
  386.     move.w    #256/2*8*4,d0
  387. @@
  388.     lea.l    (a2,d0.w),a2
  389.     move.l    #153878,d6         0.5870*4*65536*65536*65536
  390.     move.l    #2267742732,d5
  391.     bsr    make_RGB_YUV_tbl_sub
  392.  
  393.     addq.w    #4,a2
  394.     move.l    #(-1-86926),d6        -0.3316
  395.     move.l    #-4081936918,d5
  396.     bsr    make_RGB_YUV_tbl_sub
  397.  
  398.     addq.w    #4,a2
  399.     move.l    #(-1-109759),d6        -0.4187
  400.     move.l    #-2975553343,d5
  401.     bsr    make_RGB_YUV_tbl_sub
  402.  
  403.     addq.w    #4,a2
  404.     move.l    #78381,d6        0.2990
  405.     move.l    #240518169,d5
  406.     bsr    make_RGB_YUV_tbl_sub
  407.  
  408.     addq.w    #4,a2
  409.     move.l    #(-1-44145),d6        -0.1684
  410.     move.l    #-213030378,d5
  411.     bsr    make_RGB_YUV_tbl_sub
  412.  
  413.     addq.w    #4,a2
  414.     move.l    #131072,d6             0.5000
  415.     moveq.l    #0,d5
  416.     bsr    make_RGB_YUV_tbl_sub
  417.  
  418.     addq.w    #4,a2
  419.     move.l    #29884,d6             0.1140
  420.     move.l    #1786706395,d5
  421.     bsr    make_RGB_YUV_tbl_sub
  422.  
  423.     addq.w    #4,a2
  424.     move.l    #(-1-21312),d6        -0.0813
  425.     move.l    #-1319413953,d5
  426. *
  427. *  RGB to YUVùpŵÄZâeü[âuâïì∞ɼ
  428. *
  429. *    ôⁿù═
  430. *        d6.l*65536*65536+d5.l...Ælé╠æ¥ò¬*65536*65536
  431. *        d7.l...âeü[âuâïâTâCâY
  432. *        a2...âeü[âuâïâAâhâîâX
  433. *    Åoù═
  434. *        é╚é╡
  435. *    öjë≤
  436. *        d0,d1,d2,d3,a0,a1,a3
  437. *
  438. make_RGB_YUV_tbl_sub
  439.  
  440.     move.w    #8*4,a3
  441.     moveq.l    #64/2-1,d7
  442.  
  443.     cmp.w    #16,VScbit(a6)
  444.     beq    make_DCT_tbl_sub    16bit╢╫░╙░─▐é┼éáéΘ
  445.  
  446. *24bit╢╫░ùp
  447. *-----------------------
  448. make_RGB_YUV_tbl_sub_24bit
  449.  
  450.     move.w    #256/2-1,d7
  451.     asr.l    d6
  452.     roxr.l    d5
  453.     asr.l    d6
  454.     roxr.l    d5
  455.     bra    make_DCT_tbl_sub
  456.  
  457. *
  458. *  ïtù╩Äqë╗ŵÄZâeü[âuâïì∞ɼ
  459. *
  460. *    ôⁿù═
  461. *        a2.l...ŵÄZ├░╠▐┘èiö[▒─▐┌╜
  462. *        d5.l...ï≤é½╥╙╪
  463. *    Åoù═
  464. *        a2.l...ŵÄZ├░╠▐┘é╠ăé╠▒─▐┌╜
  465. *        d5.l...ï≤é½╥╙╪
  466. *
  467. .xdef    make_UQ_table
  468. make_UQ_table
  469.  
  470.     lea.l    UQL_tbl(a6),a0
  471.     lea.l    QtableL(a6),a1
  472.  
  473.     moveq.l    #64*2-1,d7    Qtableé╠î┬Éö
  474.     moveq.l    #0-1,d6        Åêù¥ì╧é▌âeü[âuâïÉö
  475.  
  476.     move.w    (a1)+,d1
  477.  
  478. make_UQ_table_loop
  479.  
  480.     move.l    #2048,d0
  481.     divs.w    d1,d0
  482.  
  483.     moveq.l    #0,d2
  484.     move.w    d0,d2
  485.     lsl.w    #1+1,d2
  486.     addq.w    #2+2,d2
  487.     sub.l    d2,d5        d2=é▒é╠Ælé╠├░╠▐┘é┼Å┴ö∩é╖éΘ╥╙╪ù╩
  488.     bcs    Memory_error        ╥╙╪é¬æ½éΦé╚éó
  489.  
  490.     swap.w    d0
  491.     sub.w    #2048,d0
  492.  
  493.     add.w    d0,d0    *▄░─▐ÆPê╩é╔
  494.     add.w    d0,d0
  495.     move.w    d0,d2
  496.     add.w    d0,d0
  497.     add.w    d2,d0    *éUö{
  498.  
  499.     add.w    d1,d1    *▄░─▐ÆPê╩é╔
  500.     add.w    d1,d1
  501.     move.w    d1,d2
  502.     add.w    d1,d1
  503.     add.w    d2,d1    *éUö{
  504.  
  505. @@
  506.  
  507.     move.w    d0,(a2)+
  508.     add.w    d1,d0
  509.     bne    @b
  510.  
  511.     move.w    d0,(a2)+    DECODEâïü[â`âôùpÆ▓É«üiânâtâ}âôò£ìåé╡é╜Ælé╗é╠é▄é▄é╛é╞òëé╠Ælé¬æSòöü|éPé│éΩé─éóéΘé╜é▀é╗éΩé╠Æ▓É«ùpüj
  512.     move.l    a2,a3        éOé╠Ælé╠âAâhâîâX
  513.  
  514. @@
  515.  
  516.     move.w    d0,(a2)+
  517.     add.w    d1,d0
  518.  
  519.     cmp.w    #2047*2*6,d0
  520.     ble    @b
  521.  
  522. make_UQ_table_3
  523.  
  524.     move.l    a3,(a0)+    éOé╠Ælé╠âAâhâîâX
  525.  
  526.     addq.w    #1,d6
  527.     move.w    (a1)+,d1
  528.  
  529.     lea.l    -2(a1),a4
  530.     movea.l    a0,a3
  531.     move.w    d6,d0
  532.  
  533. @@
  534.  
  535.     subq.w    #4,a3
  536.     cmp.w    -(a4),d1
  537.     dbeq.w    d0,@b            ô»é╢Ælé¬é┼éΘé▄é┼îƒì⌡
  538.  
  539.     dbeq.w    d7,make_UQ_table_loop    ô»é╢Ælé¬é╚é⌐é┴é╜
  540.     move.l    (a3),a3            éOé╠Ælé╠âAâhâîâX
  541.     dbne.w    d7,make_UQ_table_3    ô»é╢Ælé¬éáé┴é╜
  542.     rts
  543.  
  544. **********************************************************
  545. *
  546. * Xò√îⁿé╠è╘ê°é½üEê°é½ëäé╬é╡û╜ù▀ì∞ɼ
  547. *
  548. *    ôⁿù═
  549. *        d7...ëµû╩Åπé╠ò\Ī─▐»─Éö
  550. *    Åoù═
  551. *        é╚é╡
  552. **********************************************************
  553. .xdef    make_interval_work
  554. make_interval_work
  555.  
  556. *éwò√îⁿé╠ôWèJâïü[â`âôì∞ɼ
  557. *-------------------------
  558.     *æOÅÇö⌡
  559.     *-------------------------
  560.     movea.l    GETP_adrs(a6),a5
  561.     move.w    Interval+2(a6),d6
  562.     move.w    Interval(a6),d0
  563.     move.w  d6,a4
  564.     add.w    d0,d6
  565.     move.w    XS(a6),d2    d2=ëµæ£é╠ò\ĪèJÄnê╩Æu
  566.  
  567.     move.w    d2,d3
  568.     add.w    #$8000,d3
  569.     mulu.w    d0,d3
  570.     move.w    d3,d1
  571.     clr.w    d3
  572.     swap.w    d3
  573.     divu.w    Interval+2(a6),d3
  574.     move.w    d1,d3
  575.     divu.w    Interval+2(a6),d3
  576.     swap.w    d3
  577.     add.w    XL3(a6),d3
  578.  
  579.     move.w    HX(a6),d1    d1=ò\ĪèJÄnê╩ÆuX
  580.     move.w    d1,d0
  581.     sub.w    Home_X(a6),d0
  582.     and.w    #$1ff,d0    d0=ëµû╩é╠Homeê╩Æué⌐éτò\ĪèJÄnê╩Æué▄é┼é╠─▐»─Éö
  583.  
  584.     sub.w    d0,d7        d7=ÄcéΦ─▐»─Éö-1
  585.     subq.w    #1,d7
  586.  
  587. *ò\ĪèJÄnê╩Æué¬òëé╠ÅΩìçé╠ì∞ɼ
  588. *-------------------------
  589.         tst.w    d2
  590.         bpl    mk_int_wk_minus_end
  591.         move.w    #$7000,(a5)+        'moveq.l #0,d0
  592. mk_int_wk_minus
  593.         sub.w    a4,d3
  594.         bcs    mk_int_wk_minus_1
  595.  
  596.         move.w    #$3ac0,(a5)+        'move.w    d0,(a5)+
  597.         addq.w    #1,d1
  598.         cmp.w    VSXsize(a6),d1
  599.         bne    @f
  600.         clr.w    d1
  601.         move.w    #$9bc5,(a5)+        'sub.l d5,a5'
  602. @@
  603.         dbra    d7,mk_int_wk_minus
  604.         bra    mk_int_wk50
  605.  
  606. mk_int_wk_minus_1
  607.         add.w    d6,d3
  608.         cmp.w    XE(a6),d2
  609.         beq    mk_int_wk50
  610.         addq.w    #1,d2
  611.         bmi    mk_int_wk_minus
  612. mk_int_wk_minus_end
  613.  
  614.     cmp.w    Xline(a6),d2
  615.     bcc    mk_int_wk_over
  616.  
  617. *ì∞ɼ
  618. *-------------------------
  619.         moveq.l    #0,d5
  620.         moveq.l    #0,d0
  621. mk_int_wk_mid
  622.         sub.w    a4,d3
  623.         bcs    mk_int_wk_skip
  624.  
  625.         cmp.w    #-2,d5
  626.         beq    mk_int_wk_cont
  627.  
  628.     *ăé╠ëµæ£é╠─▐»─é╔ê┌ô«é╡é╜ÅΩìç
  629.     *-------------------------
  630.         tst.w    d5
  631.         beq    mk_int_wk_next1
  632.  
  633.         *ê┌ô«ù╩é¬2╩▐▓─ê╚Åπé╠ÅΩìç
  634.         *-------------------------
  635.         moveq.l    #0,d0
  636.  
  637.         cmp.w    #8,d5
  638.         bhi    mk_int_wk_lea    8╩▐▓─ê╚Åπé╠ê┌ô«é╚é╠é┼leaû╜ù▀é≡Ägéñ
  639.  
  640.         and.w    #$0007,d5
  641.         add.w   d5,d5
  642.         lsl.w    #8,d5
  643.         or.w    #$504c,d5
  644.         move.w    d5,(a5)+    'addq.w    #n,a4
  645.         bra    mk_int_wk_next
  646.  
  647. mk_int_wk_lea
  648.         move.w  #$49ec,(a5)+    'lea.l n(a4),a4'
  649.             move.w  d5,(a5)+
  650. mk_int_wk_next
  651.         move.w  #$3adc,(a5)+    'move.w (a4)+,(a5)+
  652.         moveq.l    #1,d0
  653.         bra    mk_int_wk_move
  654.  
  655.         *æOé╠─▐»─é╔æ▒éóé╜ÅΩìç
  656.         *------------------------
  657. mk_int_wk_next1
  658.         bclr.l    #1,d0
  659.         bnz    mk_int_wk_next    VRAMé╠ëEÆ[é⌐éτì╢Æ[é╔ê┌ô«é╡é╜é╠é┼
  660.         tst.w    d0
  661.         beq    mk_int_wk_next    æOé╔é═'move.l (a4)+,(a5)+'é¬éáéΘ
  662.         bmi    mk_int_wk_next    æOé╠─▐»─é═ê°é½ëäé╬é│éΩé─éóéΘ
  663.  
  664.         move.w  #$2adc,-2(a5)    'move.l (a4)+,(a5)+
  665.         moveq.l    #0,d0
  666.         bra    mk_int_wk_move
  667.  
  668.     *æOé╠─▐»─é╞ô»é╢ÅΩìç
  669.     *-------------------------
  670. mk_int_wk_cont
  671.         tst.w    d0
  672.         bmi    mk_int_wk_cont_cont    æOé╠─▐»─é═üAé╗é╠æOé╠─▐»─é╞ô»é╢
  673.         bclr.l    #1,d0
  674.         bnz    mk_int_wk_cont_round    VRAMé╠ëEÆ[é⌐éτì╢Æ[é╔ê┌ô«é╡é╜
  675.  
  676.         *æOé╠─▐»─é╞é╗é╠é▄é▄é┬é╚é¬é┴é─éóéΘÅΩìç
  677.         *--------------------------
  678.         tst.w    d0
  679.         bnz    @f
  680.  
  681.         move.w  #$201c,-2(a5)    'move.l (a4)+,d0
  682.         move.w  #$2ac0,(a5)+    'move.l d0,(a5)+
  683.         bra    mk_int_wk_cont_cont
  684. @@
  685.         move.w  #$301c,-2(a5)    'move.w (a4)+,d0
  686.         move.w  #$3ac0,(a5)+    'move.w d0,(a5)+
  687.         bra    mk_int_wk_cont_cont
  688.  
  689.         *æOé╠─▐»─é═VRAMé╠ëEÆ[é╠ÅΩìç
  690.         *--------------------------
  691. mk_int_wk_cont_round
  692.         tst.w    d0
  693.         bnz    @f
  694.  
  695.         move.l  #$201c2ac0,-4(a5)    'move.l (a4)+,d0
  696.                         *'move.l d0,(a5)+
  697.         bra    1f
  698. @@
  699.         move.l  #$301c3ac0,-4(a5)    'move.w (a4)+,d0
  700.                         *'move.w d0,(a5)+
  701. 1:        move.w    #$9bc5,(a5)+        'sub.l d5,a5'
  702.  
  703.         *æOé╠─▐»─é═üAé╗é╠æOé╠─▐»─é╞ô»é╢é╚ÅΩìç
  704.         *--------------------------
  705. mk_int_wk_cont_cont
  706.  
  707.         move.w  #$3ac0,(a5)+    'move.w d0,(a5)+
  708.         moveq.l    #-1,d0
  709.  
  710. mk_int_wk_move
  711.  
  712.         moveq.l    #-2,d5
  713.         addq.w    #1,d1
  714.         cmp.w    VSXsize(a6),d1
  715.         bne    @f
  716.         clr.w    d1
  717.         move.w    #$9bc5,(a5)+        'sub.l d5,a5'
  718.         bset.l    #1,d0            VRAMé╠ëEÆ[é⌐éτì╢Æ[é╔é▄é╜éóé╛Äûé≡â}ü[âN
  719. @@
  720.         dbra    d7,mk_int_wk_mid
  721.         bra    mk_int_wk50
  722.  
  723.     *ăé╠ëµæ£é╠─▐»─é╓ê┌ô«
  724.     *-----------------------------
  725. mk_int_wk_skip
  726.         add.w    d6,d3
  727.         addq.w  #2,d5
  728.         addq.w    #1,d2
  729.         moveq.l    #$7,d4
  730.         and.w    d2,d4
  731.         bne    @f
  732.         add.w    #(64-8)*2,d5
  733. @@
  734.         cmp.w    Xline(a6),d2
  735.         bcc    mk_int_wk_over
  736.  
  737.         cmp.w    XE(a6),d2
  738.         bls    mk_int_wk_mid
  739.         bra    mk_int_wk50
  740.  
  741. *ò\ĪÅIù╣ê╩Æué¬ëµæ£éµéΦæσé½éóÅΩìçé╠ì∞ɼ
  742. *-------------------------
  743. mk_int_wk_over
  744.         move.w    #$7000,(a5)+        'moveq.l #0,d0
  745. mk_int_wk_over_1
  746.         sub.w    a4,d3
  747.         bcs    mk_int_wk_over_2
  748.  
  749.         move.w    #$3ac0,(a5)+        'move.w    d0,(a5)+
  750.         addq.w    #1,d1
  751.         cmp.w    VSXsize(a6),d1
  752.         bne    @f
  753.         clr.w    d1
  754.         move.w    #$9bc5,(a5)+        'sub.l d5,a5'
  755. @@
  756.         dbra    d7,mk_int_wk_over_1
  757.         bra    mk_int_wk50
  758.  
  759. mk_int_wk_over_2
  760.         add.w    d6,d3
  761.         addq.w    #1,d2
  762.         cmp.w    XE(a6),d2
  763.         bls    mk_int_wk_over_1
  764. mk_int_wk50
  765.  
  766.     move.w    #$4e75,(a5)+    'rts
  767.  
  768.  
  769. *âLâââbâVâàé╠âtâëâbâVâà
  770. *--------------------------
  771.     btst    #0,Sys_flag2(a6)
  772.     beq    mk_int_wk_rts
  773.  
  774.     *âLâââbâVâàâtâëâbâVâà
  775.     *--------------------
  776.     moveq.l    #$3 ,d1        *0)üH
  777.                 *1)î╗ì▌é╠âLâââbâVâàÅ≤æ╘é╠ô╟é▌é╛é╡
  778.                 *2)üH
  779.                 *3)âLâââbâVâàé╠âtâëâbâVâà
  780.                 *4)âLâââbâVâàé╠Å≤æ╘é≡É▌ÆΦé╖éΘ
  781.     moveq.l    #$ac,d0
  782.     trap    #$0f
  783.  
  784. mk_int_wk_rts
  785.  
  786.     rts
  787.  
  788.   .end
  789.